From 49c64bbe00ba36293032d6e5d9f7e93bea185f81 Mon Sep 17 00:00:00 2001 From: Paul Donald Date: Tue, 11 Nov 2025 15:09:26 +0100 Subject: [PATCH] all: drop CER_ID MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We have removed it from odhcpd since this never saw adoption. Remove here also. Signed-off-by: Paul Donald Link: https://github.com/openwrt/odhcp6c/pull/118 Signed-off-by: Álvaro Fernández Rojas --- CMakeLists.txt | 6 ------ README.md | 2 -- src/dhcpv6.c | 12 ------------ src/odhcp6c.c | 3 --- src/odhcp6c.h | 11 ----------- src/script.c | 4 +--- src/ubus.c | 4 +--- 7 files changed, 2 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fc60a84..9067819 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,12 +38,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${ubox_include_dir}) find_library(libubox ubox) target_link_libraries(${PROJECT_NAME} PRIVATE ${libubox}) - -# Optional Features -if (${EXT_CER_ID}) - target_compile_definitions(${PROJECT_NAME} PRIVATE EXT_CER_ID=${EXT_CER_ID}) -endif(${EXT_CER_ID}) - if(${UBUS}) target_compile_definitions(${PROJECT_NAME} PRIVATE WITH_UBUS) target_sources(${PROJECT_NAME} PRIVATE src/ubus.c) diff --git a/README.md b/README.md index e49ca4e..5397cea 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,6 @@ especially routers. * Configurable SOL_MAX_RT * DS-Lite AFTR-Name Option * Softwire address and port mapped clients (MAP, LW4over6) - * CER-ID (experimental) * Server unicast Option 4. Support for requesting and parsing Router Advertisements @@ -89,7 +88,6 @@ The script is called with the following parameters: `` `` | `RA_REACHABLE` | ND Reachability time | | `RA_RETRANSMIT` | ND Retransmit time | | `AFTR` | The DS-Lite AFTR domain name | -| `CER` | A space-separated list of CER-id IPv6 | | `MAPE` / `MAPT` / `LW4O6` | Softwire rules for MAPE, MAPT and LW4O6 | | `PASSTHRU` | The content of the last packet relayed | diff --git a/src/dhcpv6.c b/src/dhcpv6.c index a6be119..f8e75e8 100644 --- a/src/dhcpv6.c +++ b/src/dhcpv6.c @@ -617,9 +617,6 @@ int init_dhcpv6(const char *ifname) htons(DHCPV6_OPT_SNTP_SERVERS), htons(DHCPV6_OPT_NTP_SERVER), htons(DHCPV6_OPT_PD_EXCLUDE), -#ifdef EXT_CER_ID - htons(DHCPV6_OPT_CER_ID), -#endif }; odhcp6c_add_state(STATE_ORO, oro, sizeof(oro)); } @@ -1342,7 +1339,6 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _o_unused const int rc, odhcp6c_clear_state(STATE_SIP_IP); odhcp6c_clear_state(STATE_SIP_FQDN); odhcp6c_clear_state(STATE_AFTR_NAME); - odhcp6c_clear_state(STATE_CER); odhcp6c_clear_state(STATE_S46_MAPT); odhcp6c_clear_state(STATE_S46_MAPE); odhcp6c_clear_state(STATE_S46_LW); @@ -1455,14 +1451,6 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _o_unused const int rc, if (inf_max_rt >= DHCPV6_INF_MAX_RT_MIN && inf_max_rt <= DHCPV6_INF_MAX_RT_MAX) dhcpv6_retx[DHCPV6_MSG_INFO_REQ].max_timeo = inf_max_rt; - #ifdef EXT_CER_ID - } else if (otype == DHCPV6_OPT_CER_ID && olen == -4 + - sizeof(struct dhcpv6_cer_id)) { - struct dhcpv6_cer_id *cer_id = (void*)&odata[-4]; - struct in6_addr any = IN6ADDR_ANY_INIT; - if (memcmp(&cer_id->addr, &any, sizeof(any))) - odhcp6c_add_state(STATE_CER, &cer_id->addr, sizeof(any)); - #endif } else if (otype == DHCPV6_OPT_S46_CONT_MAPT) { odhcp6c_add_state(STATE_S46_MAPT, odata, olen); } else if (otype == DHCPV6_OPT_S46_CONT_MAPE) { diff --git a/src/odhcp6c.c b/src/odhcp6c.c index 58da874..54549bd 100644 --- a/src/odhcp6c.c +++ b/src/odhcp6c.c @@ -116,9 +116,6 @@ static struct odhcp6c_opt opts[] = { { .code = DHCPV6_OPT_RADIUS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL }, { .code = DHCPV6_OPT_SOL_MAX_RT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_SOLICIT, .str = NULL }, { .code = DHCPV6_OPT_INF_MAX_RT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_STATELESS, .str = NULL }, -#ifdef EXT_CER_ID - { .code = DHCPV6_OPT_CER_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL }, -#endif { .code = DHCPV6_OPT_DHCPV4_MSG, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL }, { .code = DHCPV6_OPT_S46_RULE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL }, { .code = DHCPV6_OPT_S46_BR, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL }, diff --git a/src/odhcp6c.h b/src/odhcp6c.h index 858bb6f..9876172 100644 --- a/src/odhcp6c.h +++ b/src/odhcp6c.h @@ -106,10 +106,6 @@ enum dhcvp6_opt { DHCPV6_OPT_RADIUS = 81, DHCPV6_OPT_SOL_MAX_RT = 82, DHCPV6_OPT_INF_MAX_RT = 83, -#ifdef EXT_CER_ID - /* draft-donley-dhc-cer-id-option-03 */ - DHCPV6_OPT_CER_ID = EXT_CER_ID, -#endif DHCPV6_OPT_DHCPV4_MSG = 87, /* RFC 7598 */ DHCPV6_OPT_S46_RULE = 89, @@ -297,12 +293,6 @@ struct dhcpv6_auth_reconfigure { uint8_t key[16]; } _o_packed; -struct dhcpv6_cer_id { - uint16_t type; - uint16_t len; - struct in6_addr addr; -} _o_packed; - struct dhcpv6_s46_portparams { uint8_t offset; uint8_t psid_len; @@ -390,7 +380,6 @@ enum odhcp6c_state { STATE_RA_SEARCH, STATE_AFTR_NAME, STATE_OPTS, - STATE_CER, STATE_S46_MAPT, STATE_S46_MAPE, STATE_S46_LW, diff --git a/src/script.c b/src/script.c index fba4cde..131d70d 100644 --- a/src/script.c +++ b/src/script.c @@ -435,7 +435,7 @@ void script_call(const char *status, int delay, bool resume) } else if (pid == 0) { size_t dns_len, search_len, custom_len, sntp_ip_len, ntp_ip_len, ntp_dns_len; - size_t sip_ip_len, sip_fqdn_len, aftr_name_len, cer_len, addr_len; + size_t sip_ip_len, sip_fqdn_len, aftr_name_len, addr_len; size_t s46_mapt_len, s46_mape_len, s46_lw_len, passthru_len; signal(SIGTERM, SIG_DFL); @@ -454,7 +454,6 @@ void script_call(const char *status, int delay, bool resume) struct in6_addr *sip = odhcp6c_get_state(STATE_SIP_IP, &sip_ip_len); uint8_t *sip_fqdn = odhcp6c_get_state(STATE_SIP_FQDN, &sip_fqdn_len); uint8_t *aftr_name = odhcp6c_get_state(STATE_AFTR_NAME, &aftr_name_len); - struct in6_addr *cer = odhcp6c_get_state(STATE_CER, &cer_len); uint8_t *s46_mapt = odhcp6c_get_state(STATE_S46_MAPT, &s46_mapt_len); uint8_t *s46_mape = odhcp6c_get_state(STATE_S46_MAPE, &s46_mape_len); uint8_t *s46_lw = odhcp6c_get_state(STATE_S46_LW, &s46_lw_len); @@ -478,7 +477,6 @@ void script_call(const char *status, int delay, bool resume) fqdn_to_env("DOMAINS", search, search_len); fqdn_to_env("SIP_DOMAIN", sip_fqdn, sip_fqdn_len); fqdn_to_env("AFTR", aftr_name, aftr_name_len); - ipv6_to_env("CER", cer, cer_len / sizeof(*cer)); s46_to_env(STATE_S46_MAPE, s46_mape, s46_mape_len); s46_to_env(STATE_S46_MAPT, s46_mapt, s46_mapt_len); s46_to_env(STATE_S46_LW, s46_lw, s46_lw_len); diff --git a/src/ubus.c b/src/ubus.c index 4e127ca..0b37ddf 100644 --- a/src/ubus.c +++ b/src/ubus.c @@ -530,7 +530,7 @@ static int states_to_blob(void) { char *buf = NULL; size_t dns_len, search_len, custom_len, sntp_ip_len, ntp_ip_len, ntp_dns_len; - size_t sip_ip_len, sip_fqdn_len, aftr_name_len, cer_len, addr_len; + size_t sip_ip_len, sip_fqdn_len, aftr_name_len, addr_len; size_t s46_mapt_len, s46_mape_len, s46_lw_len, passthru_len; struct in6_addr *addr = odhcp6c_get_state(STATE_SERVER_ADDR, &addr_len); struct in6_addr *dns = odhcp6c_get_state(STATE_DNS, &dns_len); @@ -542,7 +542,6 @@ static int states_to_blob(void) struct in6_addr *sip = odhcp6c_get_state(STATE_SIP_IP, &sip_ip_len); uint8_t *sip_fqdn = odhcp6c_get_state(STATE_SIP_FQDN, &sip_fqdn_len); uint8_t *aftr_name = odhcp6c_get_state(STATE_AFTR_NAME, &aftr_name_len); - struct in6_addr *cer = odhcp6c_get_state(STATE_CER, &cer_len); uint8_t *s46_mapt = odhcp6c_get_state(STATE_S46_MAPT, &s46_mapt_len); uint8_t *s46_mape = odhcp6c_get_state(STATE_S46_MAPE, &s46_mape_len); uint8_t *s46_lw = odhcp6c_get_state(STATE_S46_LW, &s46_lw_len); @@ -570,7 +569,6 @@ static int states_to_blob(void) CHECK(fqdn_to_blob("DOMAINS", search, search_len)); CHECK(fqdn_to_blob("SIP_DOMAIN", sip_fqdn, sip_fqdn_len)); CHECK(fqdn_to_blob("AFTR", aftr_name, aftr_name_len)); - CHECK(ipv6_to_blob("CER", cer, cer_len / sizeof(*cer))); CHECK(s46_to_blob(STATE_S46_MAPE, s46_mape, s46_mape_len)); CHECK(s46_to_blob(STATE_S46_MAPT, s46_mapt, s46_mapt_len)); CHECK(s46_to_blob(STATE_S46_LW, s46_lw, s46_lw_len)); -- 2.30.2